import OEScode.*;

public class Main {
    public static void main(String[] args) {
        // 分析题意，我选择组合模式和观察者模式
        // 解题思路：组合模式来管理考生，将考生添加到不同的考生组里
        //         观察者模式管理候考人组，添加各个考生组或单独的考生，用来发送通知

        //这里创建考生和考生组
        Component c1_1=new Examinee("学生01");
        Component c1_2=new Examinee("学生02");
        Component c2_1=new Examinee("学生03");
        Component c2_2=new Examinee("学生04");
        Component c2_3=new Examinee("学生05");
        Component c1=new Group("考生组01");
        Component c2=new Group("考生组02");
        Component c=new Group("考生组03");
        //将考生添加到考生组里
        c1.addChild(c1_1);
        c1.addChild(c1_2);
        c2.addChild(c2_1);
        c2.addChild(c2_2);
        c2.addChild(c2_3);
        //考生组同样也可以添加到考生组里
        c.addChild(c1);
        c.addChild(c2);


        // 创建候考人列表并添加候考人
        Examination exam01 = new Examination("候考人组01");//这一组添加两个组
        exam01.addCandidate(c1);
        exam01.addCandidate(c2);

        Examination exam02 = new Examination("候考人组02");//这一组添加一个组和一名学生
        exam02.addCandidate(c1);
        exam02.addCandidate(c2_2);

        Examination exam03 = new Examination("候考人组03");//这一组只添加一名学生
        exam03.addCandidate(c1_1);
        // 发送通知
        exam01.notifyCandidates("考试改为大报告");
        System.out.println("===============================");
        exam02.notifyCandidates("你们负责发放问卷");
        System.out.println("===============================");
        exam03.notifyCandidates("你来担任组长");
    }
}